package br.edu.unifei.mestrado.kl;

import java.util.Scanner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.edu.unifei.mestrado.commons.graph.GraphWrapper;
import br.edu.unifei.mestrado.db.graph.GraphDB;

public class MainKLNeo4J {

	private static Logger logger = LoggerFactory.getLogger(MainKLNeo4J.class);

	public static void main(String[] args) {
		String reuseDBStr = null;
		String file = null;
		boolean reuseDB = false;

		// executar assim: main false fileName.txt
		// ou: main true
		// ou sem nada, daí entra tudo via teclado
		if (args.length > 0) {
			reuseDBStr = args[0];
			reuseDB = Boolean.parseBoolean(reuseDBStr);
			if (args.length > 1) {
				file = args[1];
			} else {
				logger.warn("Quando não reutilizar o banco, o arquivo eh obrigatorio");
				System.exit(2);
			}
		}

		if (reuseDBStr == null) {
			Scanner sc = new Scanner(System.in);
			int reuseDBInt = -1;
			while (reuseDBInt != 0 && reuseDBInt != 1) {
				logger.warn("Você deseja reusar o banco já existente? (1) - Sim  (0) - Não: ");
				reuseDBInt = sc.nextInt();
			}
			reuseDB = reuseDBInt == 1;
		}
		logger.warn("Iniciando KL com Neo4J... file: " + file);
		GraphDB grafo = new GraphDB(reuseDB, file, GraphWrapper.NO_LEVEL);
		KLNeoDB kl = new KLNeoDB(grafo);
		kl.execute();
	}
}
